package com.hsource.doctorcenter.service.doctor;

import com.hsource.doctorcenter.domain.doctor.Doctor;
import com.hsource.doctorcenter.domain.doctor.DoctorApi;

import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
import java.util.List;
import java.util.Map;


/**
 * @author yangYang
 * @version 1.0
 * @date 2020/9/23 15:17
 * @describe 医生信息Service接口
 */
public interface IDoctorService {
    /**
     * 获取医生时长价格|可预约时间
     * @param userId 用户id
     * @param doctorId 医生id
     * @throws ParseException
     * @throws NoSuchAlgorithmException
     */
    Map<String,Object> getDoctorPhoneInfo(String userId ,String doctorId) throws ParseException, NoSuchAlgorithmException;
    /**
     * 查询医生信息
     *
     * @param id 医生信息ID
     * @return 医生信息
     */
     Doctor selectDoctorById(String id);

    /**
     * 查询医生信息列表
     *
     * @param doctor 医生信息
     * @return 医生信息集合
     */
     List<Doctor> selectDoctorList(Doctor doctor);
    /**
     * 根据doctor_id 查询医生信息
     * @param doctor_id
     * @return
     */
    Doctor selectDoctorByDoctorId(String doctor_id);

    /**
     * 新增医生信息
     *
     * @param doctor 医生信息
     * @return 结果
     */
     int insertDoctor(Doctor doctor);

    /**
     * 修改医生信息
     *
     * @param doctor 医生信息
     * @return 结果
     */
     int updateDoctor(Doctor doctor);

    /**
     * 批量删除医生信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
     int deleteDoctorByIds(String ids);

    /**
     * 删除医生信息信息
     *
     * @param id 医生信息ID
     * @return 结果
     */
     int deleteDoctorById(String id);

    /**
     * 根据医生id数组查询医生集合信息
     * @param doctorIds
     * @return
     */
    List<DoctorApi> selectDoctorListByDoctorIds(String doctorIds);


    Doctor getDoctorsDetailed(String userId,String doctorId) throws ParseException, NoSuchAlgorithmException;

    /**
     * 找医生接口
     * @param userId 用户id
     * @param famousDoctor 是否筛选名医
     * @param startNum 开始数
     * @param count 每次取的医生数
     * @param province 省份
     * @param city 城市
     * @param serviceType 服务类型
     * @return
     * @throws ParseException
     * @throws NoSuchAlgorithmException
     */
    Map<String, Object> getDoctorsList(String userId, int famousDoctor, int startNum, int count, String province, String city, String serviceType, String clinicNo, String sortType) throws ParseException, NoSuchAlgorithmException;


    /**
     * 推荐医生
     * @param userId 用户id
     * @param ask 首次
     * @return
     * @throws ParseException
     * @throws NoSuchAlgorithmException
     */
    Map<String, Object> recommendedDoctors(String userId,String ask) throws ParseException, NoSuchAlgorithmException;
    /**
     * 搜索医生接口
     * @param queryText 搜索词
     * @param page 页码 1-10
     * @param province 省份
     * @param city 城市
     * @return
     */
    Map<String,Object> searchDoctors(String userId,String queryText,int page,String province,String city) throws ParseException, NoSuchAlgorithmException;
}
